#!/usr/bin/env python3
"""
RAG智能问答系统启动脚本
"""

import os
import sys
import time
from pathlib import Path

def print_banner():
    """打印启动横幅"""
    banner = """
    ╔══════════════════════════════════════════════════════════════╗
    ║                    RAG智能问答系统                            ║
    ║                                                              ║
    ║  🚀 一键启动所有后端服务                                      ║
    ║  📚 支持混合检索 (BM25 + 向量检索)                           ║
    ║  💬 支持流式对话和历史记录                                    ║
    ║  🎯 支持多种检索模式                                          ║
    ╚══════════════════════════════════════════════════════════════╝
    """
    print(banner)

def show_usage_info():
    """显示使用信息"""
    print("\n" + "="*60)
    print("📖 使用说明:")
    print("="*60)
    print("🌐 Web界面: http://localhost:5000")
    print("🔧 API文档:")
    print("  - 健康检查: GET /api/health")
    print("  - 聊天接口: POST /api/chat")
    print("  - 搜索接口: POST /api/search")
    print("  - 历史记录: GET /api/history")
    print("  - 清空历史: DELETE /api/history")
    print("  - 文档信息: GET /api/documents")
    print("  - 系统初始化: POST /api/initialize")
    print("\n💡 功能特性:")
    print("  - 混合检索 (BM25 + 向量检索)")
    print("  - 流式对话响应")
    print("  - 10轮对话历史记录")
    print("  - 多种检索模式 (hybrid, tfidf, bm25, vector)")
    print("  - 实时检索结果展示")
    print("="*60)

def main():
    """主函数"""
    print_banner()
    
    # 显示使用信息
    show_usage_info()
    
    print("\n🔧 请确保以下服务正在运行:")
    print("  1. MongoDB (默认端口: 27017)")
    print("  2. OneAPI (默认地址: http://localhost:3001)")
    
    print("\n🚀 启动系统...")
    print("🎯 按 Ctrl+C 停止服务")
    
    try:
        # 导入并启动应用
        from app import app, retriever
        
        # 初始化系统
        print("🔧 初始化系统组件...")
        retriever.initialize()
        
        # 启动Flask应用
        print("🌐 启动Web服务器...")
        app.run(
            host='0.0.0.0',
            port=5000,
            debug=False,
            use_reloader=False
        )
        
    except ImportError as e:
        print(f"❌ 导入错误: {str(e)}")
        print("请确保已安装所有依赖: pip install -r requirements.txt")
        sys.exit(1)
    except KeyboardInterrupt:
        print("\n🛑 用户中断，正在关闭服务...")
    except Exception as e:
        print(f"❌ 启动失败: {str(e)}")
        print("请检查MongoDB和OneAPI服务是否正常运行")
        sys.exit(1)

if __name__ == "__main__":
    main() 